import Vue from 'vue'

const getComponentName = (str, isInsid) => {
  const arr = str.split('/')
  if (isInsid) {
    // 如启用子文件夹需选择最后一级文件夹作为组件名
    str = arr[arr.length - 2]
  }
  // console.log(str)
  return str.charAt(0).toUpperCase() + str.slice(1)
}
// 获取全部以.vue结尾的组件 参数：directory文件夹 useSubdirectories是否使用子目录 regExp 正则
// require.context模块导出（返回）一个（require）函数，这个函数可以接收一个参数：request 函数–这里的 request 应该是指在 require() 语句中的表达式
const requireComponent = require.context('./', true, /index\.vue$/)
const requireComponentInsid = require.context('./', false, /\.vue$/)

const install = () => {
  requireComponent.keys().forEach(fileName => {
    const config = requireComponent(fileName)
    const componentName = getComponentName(fileName.replace(/^\.\//, '').replace(/\.vue+$/, ''), true)
    Vue.component(componentName, config.default || config)
  })
  requireComponentInsid.keys().forEach(fileName => {
    const config = requireComponentInsid(fileName)
    const componentName = getComponentName(fileName.replace(/^\.\//, '').replace(/\.vue+$/, ''))
    Vue.component(componentName, config.default || config)
  })
}

export default {
  install // 对外暴露install方法
}
